// 活动相关API接口
const { request } = require('../utils/request');

/**
 * 创建活动
 * @param {object} data 活动数据
 * @param {string} data.title 活动标题
 * @param {string} data.subtitle 活动副标题
 * @param {string} data.content 活动内容
 * @param {string} data.startTime 开始时间
 * @param {string} data.endTime 结束时间
 * @param {number} data.maxParticipants 最大参与人数
 * @param {string} data.contactPerson 负责人
 * @param {string} data.contactPhone 联系电话
 * @param {string} data.location 活动地点
 * @param {string} data.organizer 主办方
 * @param {boolean} data.registrationRequired 是否需要报名
 * @param {string} data.registrationDeadline 报名截止时间
 * @param {Array} data.images 活动图片数组
 */
function createActivity(data) {
  return request('/api/activities/create', {
    method: 'POST',
    data: data
  })
}

/**
 * 获取活动列表
 * @param {object} params 查询参数
 * @param {number} params.page 页码
 * @param {number} params.limit 每页数量
 * @param {string} params.status 活动状态
 * @param {string} params.keyword 关键词
 * @param {string} params.startDate 开始日期
 * @param {string} params.endDate 结束日期
 */
function getActivityList(params) {
  return request('/api/activities/list', {
    method: 'GET',
    data: params
  })
}

/**
 * 获取活动详情
 * @param {number} id 活动ID
 */
function getActivityDetail(id) {
  return request(`/api/activities/detail/${id}`, {
    method: 'GET'
  })
}

/**
 * 更新活动
 * @param {number} id 活动ID
 * @param {object} data 更新数据
 */
function updateActivity(id, data) {
  return request(`/api/activities/update/${id}`, {
    method: 'PUT',
    data: data
  })
}

/**
 * 删除活动
 * @param {number} id 活动ID
 */
function deleteActivity(id) {
  return request(`/api/activities/delete/${id}`, {
    method: 'DELETE'
  })
}

/**
 * 更新活动状态
 * @param {number} id 活动ID
 * @param {string} status 活动状态
 */
function updateActivityStatus(id, status) {
  return request(`/api/activities/status/${id}`, {
    method: 'PUT',
    data: { status }
  })
}

/**
 * 检查用户报名状态
 * @param {number} id 活动ID
 * @param {number} userId 用户ID
 */
function checkRegistrationStatus(id, userId) {
  return request(`/api/activities/check-registration/${id}`, {
    method: 'GET',
    data: { userId }
  })
}

/**
 * 用户报名活动
 * @param {number} id 活动ID
 * @param {object} data 报名数据
 * @param {number} data.userId 用户ID
 * @param {string} data.notes 备注信息（可选）
 */
function registerActivity(id, data) {
  return request(`/api/activities/register/${id}`, {
    method: 'POST',
    data: data
  })
}

/**
 * 取消报名活动
 * @param {number} id 活动ID
 * @param {object} data 取消报名数据
 * @param {number} data.userId 用户ID
 */
function cancelRegistration(id, data) {
  return request(`/api/activities/cancel-registration/${id}`, {
    method: 'POST',
    data: data
  })
}

/**
 * 发布评论
 * @param {number} id 活动ID
 * @param {object} data 评论数据
 * @param {number} data.userId 用户ID
 * @param {string} data.content 评论内容
 * @param {number} data.parentId 父评论ID（可选，用于回复）
 */
function publishComment(id, data) {
  return request(`/api/activities/comment/${id}`, {
    method: 'POST',
    data: data
  })
}

/**
 * 获取活动评论列表
 * @param {number} id 活动ID
 * @param {object} params 查询参数
 * @param {number} params.page 页码
 * @param {number} params.limit 每页数量
 */
function getActivityComments(id, params = {}) {
  return request(`/api/activities/comments/${id}`, {
    method: 'GET',
    data: params
  })
}

/**
 * 点赞评论
 * @param {number} commentId 评论ID
 * @param {object} data 点赞数据
 * @param {number} data.userId 用户ID
 */
function likeComment(commentId, data) {
  return request(`/api/activities/comment/${commentId}/like`, {
    method: 'POST',
    data: data
  })
}

/**
 * 取消点赞评论
 * @param {number} commentId 评论ID
 * @param {number} userId 用户ID
 */
function unlikeComment(commentId, userId) {
  return request(`/api/activities/comment/${commentId}/like`, {
    method: 'DELETE',
    data: { userId }
  })
}

/**
 * 获取即将开始或正在进行的活动列表
 * @param {object} params 查询参数
 * @param {number} params.page 页码
 * @param {number} params.limit 每页数量
 * @param {string} params.keyword 关键词搜索
 */
function getActiveActivities(params = {}) {
  return request('/api/activities/active-activities', {
    method: 'GET',
    data: params
  })
}

/**
 * 获取用户参与的活动列表
 * @param {object} params 查询参数
 * @param {number} params.userId 用户ID（必需）
 * @param {number} params.page 页码
 * @param {number} params.limit 每页数量
 * @param {string} params.status 活动状态筛选
 * @param {string} params.keyword 关键词搜索
 */
function getUserActivities(params) {
  return request('/api/activities/user-activities', {
    method: 'GET',
    data: params
  })
}

/**
 * 获取用户参与活动总数
 * @param {number} userId 用户ID
 */
function getUserActivityCount(userId) {
  return request(`/api/activities/user-activity-count/${userId}`, {
    method: 'GET'
  })
}

/**
 * 获取管理员总发布活动次数
 * @param {number} adminId 管理员ID
 */
function getAdminActivityCount(adminId) {
  return request(`/api/activities/admin-activity-count/${adminId}`, {
    method: 'GET'
  })
}

module.exports = {
  createActivity,
  getActivityList,
  getActivityDetail,
  updateActivity,
  deleteActivity,
  updateActivityStatus,
  checkRegistrationStatus,
  registerActivity,
  cancelRegistration,
  publishComment,
  getActivityComments,
  likeComment,
  unlikeComment,
  getActiveActivities,
  getUserActivities,
  getUserActivityCount,
  getAdminActivityCount
}
